﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ycdlib
{
	public interface YCNode
	{
		/// <summary>
		/// 型の取得ができる
		/// </summary>
		string YCType { get; }


		/// <summary>
		/// 名前の取得、または設定ができる
		/// </summary>
		string Name { get; set; }


		/// <summary>
		/// ＩＤの取得、または設定ができる
		/// </summary>
		string ID { get; set; }


		/// <summary>
		/// 値の取得、または設定ができる
		/// </summary>
		object Value { get; set; }


		/// <summary>
		///	親ノードの取得ができる
		/// </summary>
		YCNode Parent { get; }


		/// <summary>
		/// 子ノードの数を取得できる
		/// </summary>
		int ChildCount { get; }


		/// <summary>
		/// ストリームに出力する
		/// </summary>
		/// <param name="s"></param>
		/// <param name="p"></param>
		void Write ( System.IO.Stream s, int p );

		/// <summary>
		/// 子を追加する
		/// </summary>
		/// <param name="newNode">追加する子のノード</param>
		void AddChild ( YCNode newNode );



	}
}
